<?php
require_once 'DAO/DAOUsuario.php';
require_once 'DAO/DAOEmpresa.php';

class LoginController {
    // Guarda uma instância da classe
    static private $instance;
    
    private $usuario;
    private $tipo;
    private $conectado;
    
    // O método singleton 
    static public function singleton() 
    {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }

        return self::$instance;
    }
    
    public function getUsuario() {
        if(isset($_SESSION['Usuario'])){
            $this->usuario = $_SESSION['Usuario'];
        }else{
            $this->usuario = NULL;
        }
        return $this->usuario;
    }

    public function getTipo() {
        return $this->tipo;
    }
    
    
    function LoginController() {
        @session_start();
        $this->estaConectado();
        if (!empty($_POST)) {
            if (!empty($_POST['formCadastroUsuarioSimples'])) {
                $this->cadastraNovoUsuario();
            }
            switch ($_POST) {
                case(!empty($_POST['logout'])):
                    $this->logout();
                    break;
                case (empty($_POST['edtEmail'])):
                    $erro = 1;
                    break;
                case (empty($_POST['edtSenha'])):
                    $erro = 1;
                    break;
                case(empty($erro)):
                    $this->setLogin();
                    if(!$this->contaEstaAtiva() and $this->getTipo()==TIPO_EMPRESA){
                         header ("location: /vencida");
                    }
                    break;
            }
        }
    }
    
    public function estaConectado() {
        if(isset($_SESSION['Usuario'])){
            $this->conectado=true;
            $this->tipo=$_SESSION['USU_TIPO'];
            $this->usuario=$_SESSION['Usuario'];
        }else{
            $this->conectado=false;
            $this->tipo=0;
        }
        return $this->conectado;
    }
    
    public function contaEstaAtiva() {
        if($this->estaConectado() and $this->getTipo()==TIPO_EMPRESA){
            if($this->getUsuario()->getValidadeDaConta()){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }
    
    function cadastraNovoUsuario() {
        $usuario = new Usuario();
        $usuario->setNome($_POST['edtNome']);
        $usuario->setEmail($_POST['edtEmail']);
        $usuario->setSenha($_POST['edtSenha']);
        $du = new DAOUsuario();
        $usuario = $du->addUsuario($usuario);
        if(!is_a($usuario, 'Usuario')){
            echo "<script> alert('Usuario já cadastrado com esse Email!'); </script>";
        }
    }

    function logout() {
        session_destroy();
        header("Location: ./index.php");
    }

    function getBarraLogin() {
        if ($this->estaConectado()) {
            if ($this->getTipo() == TIPO_USUARIO) {
                ?>
                <form method="POST" action="/">
                    <input type="hidden" name="logout" value="logout"/>
                    <button class="btn pull-right" type="submit"><i class="icon-off"> </i> Logout</button>
                    <div class="btn-group pull-right">
                        <a href="/usuario" role="button" class="btn"> <i class="icon-user"></i> <? echo FuncoesGerais::getPrimeiroNome($this->getUsuario()->getNome()); ?></a>
                        <button class="btn dropdown-toggle" data-toggle="dropdown">
                            <span class="caret"></span>
                        </button>
                        <ul class="dropdown-menu">
                            <li><a href="/minharepublica">Minha Republica</a></li>
                        </ul>
                    </div>

                </form>
                <?
            } else if($this->getTipo() == TIPO_EMPRESA){
                ?>
                <form method="POST" action="/">
                    <input type="hidden" name="logout" value="logout"/>
                    <button class="btn pull-right" type="submit"><i class="icon-off"> </i> Logout</button>
                    <div class="btn-group pull-right">
                        <a href="/empresa/<?php echo $this->getUsuario()->getCodigo(); ?>" role="button" class="btn"> <i class="icon-briefcase"></i> <? echo FuncoesGerais::getPrimeiroNome($this->getUsuario()->getNome()); ?></a>
                        <button class="btn dropdown-toggle" data-toggle="dropdown">
                            <span class="caret"></span>
                        </button>
                        <ul class="dropdown-menu">
                            <li><a href="/meusevento">Meus Eventos</a></li>
                            <li><a href="/editarEmpresa">Editar Perfil</a></li>
                            <li><a href="/estatisticas/empresa">Estatística de Acesso</a></li>
                        </ul>
                    </div>

                </form>
                <?
            }
        } else {
            ?>
            <a href="#modalCadastro" role="button" class="btn pull-right" data-toggle="modal">Cadastrar</a>
            <a href="#modalLogin" role="button" class="btn pull-right" data-toggle="modal">Entrar</a>
            <?
        }
    }

    function setLogin() {
//Verificar se é Usuario ou Empresa
        require_once 'DAO/DAOLogin.php';
        $dl = new DAOLogin();
        $usuarioOrEmpresa = $dl->getUsuarioOrEmpresa($_POST['edtEmail'], $_POST['edtSenha']);
        
//Caso seja Usuario
        if ($usuarioOrEmpresa == "U") {
            $du = new DAOUsuario();
            $usuario = $du->getUsuarioByLogin($_POST['edtEmail'], $_POST['edtSenha']);
            if ($usuario != NULL) {
                $_SESSION['USU_TIPO'] = TIPO_USUARIO;
                $_SESSION['Usuario'] = $usuario;
            }
        } else {
            if ($usuarioOrEmpresa == "E") {
                $de = new DAOEmpresa();
                $usuario = $de->getEmpresaByLogin($_POST['edtEmail'], $_POST['edtSenha']);
                if (!empty($usuario)) {
                    $_SESSION['USU_TIPO'] = TIPO_EMPRESA;
                    $_SESSION['Usuario'] = $usuario;
                }
            }else{
                echo "<script> alert('Usuario Não Cadastrado'); </script>";
            }
        }
    }

}
?>
